#if !defined MEMENTO_H
#define MEMENTO_H

#include <string>
namespace xml_api
{
  class MementoArray;
  class  Memento
  {
  public:
    Memento();
    virtual ~Memento();
  public:
    std::string GetName();
    void SetName(std::string name);
    bool GetBoolean(std::string key);
    void SetBoolean(std::string key, bool value);
    int GetInteger(std::string key);
    void SetInteger(std::string key, int value);
    double GetFloat(std::string key);
    void SetFloat(std::string key, float value);
    std::string GetString(std::string key);
    void SetString(std::string key, std::string value);
    int GetAttributeCount();
    std::string GetAttributeName(int index);
    std::string GetAttributeValue(int index);
    Memento *CreateChild(std::string type);
    int GetChildCount();
    Memento *GetChild(int index);
    Memento *GetChild(std::string type);
    MementoArray * GetChildren(std::string type);
  };
}
#endif
